home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_02 / allison / vargs2.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-30  |  528 b   |  29 lines

  1. LISTING 3 - Encapsulates the parameter extraction logic
  2. /* vargs2.c */
  3. #include <stdio.h>
  4.  
  5. #define first_arg(x,p) \
  6.   p = (char *) &x + sizeof(x)
  7. #define next_arg(p,T,x) \
  8.   x = *(T*)p; p += sizeof(T)
  9.  
  10. void int_string_pairs(size_t npairs,...)
  11. {
  12.     int n;
  13.     char *s, *p;
  14.  
  15.     first_arg(npairs,p);
  16.     while (npairs--)
  17.     {
  18.         next_arg(p,int,n);
  19.         next_arg(p,char *,s);
  20.         printf("%d, %s\n",n,s);
  21.     }
  22. }
  23.  
  24. main()
  25. {
  26.     int_string_pairs(3,1,"one",2,"two",3,"three");
  27.     return 0;
  28. }
  29.